/**
 * 列表型数据 → 树形数据
 * @params
 * {Array} list      列表型数据
 *{rootValue} number 根节点的pid
 }
*/

export const listToTree = (list, rootValue) => {
  // 核心逻辑：遍历列表数据，找到父级部门，递归思想(找规律)，生成树形结构
  // 结论：子级部门的pid === 父级部门的id
  // 递归：一般处理未知层级的数据
  // 特点：函数内自己调用自己 / 要有结束条件(出口) → 参数不能重复
  const tree = [] // 存储树形结构数据

  list.forEach(item => {
    // 确定一级部门
    if (item.pid === rootValue) {
      // 根据规律确定二级 / 三级 / 四级
      // 查找原则：通过父级确定子级 → 传入父级部门的id (子级部门的pid === 父级部门的id)
      const children = listToTree(list, item.id)
      // 如果有子级部门 将子级部门挂载到父级部门上
      if (children.length) item.children = children
      tree.push(item)
    }
  })
  return tree

  // list.forEach(item => {
  //   // 一级部门
  //   if (item.pid === rootValue) {
  //     // console.log(item)
  //     tree.push(item)
  //     list.forEach(citem => {
  //       // 二级部门
  //       if (citem.pid === item.id) {
  //         item.children = item.children || []
  //         item.children.push(citem)
  //         list.forEach(gitem => {
  //           // 三级部门
  //           if (gitem.pid === citem.id) {
  //             citem.children = citem.children || []
  //             citem.children.push(gitem)
  //           }
  //         })
  //       }
  //     })
  //   }
  // })
  // return tree
}
